The present invention is directed to an improvement in computing systems and in particular to computer systems which provide for the automated testing of computer system components.
Part of the development of a computer system is a testing phase to identify errors in the program code for the system and to determine whether the system specifications have been met. It is important that the testing of software for computer systems be complete and rigorous. Different tools have been developed to aid in the testing of software.
For a client-server or web-based software system, such as an electronic commerce product, testing of the system component software is potentially complex. This complexity arises because a web-based product may run on many different platforms, and be used by different web browsers and servers. The system may also access databases which are distributed widely over different networks. The distributed nature of the system and its complexity may require the use of different testing tools for software verification. These factors affecting the testing of computer system components may apply to electronic commerce products, as well as to other software developed for use in distributed client-server architecture systems such as internet and intranet environments.
This potentially complex testing phase for system development typically requires significant time and effort from software developers to define and conduct tests on different systems with different testing tools, and to manage the results of the testing once it has been carried out.
It is therefore desirable to have a computer system which will manage the testing of complex client-server software products using the appropriate testing tools on available system resources and which will collect the results of such tests.
According to one aspect of the present invention, there is provided an improved system for the automated testing of software.
According to another aspect of the present invention, there is provided a system for automated testing of software, the system having a system server component including, a test bucket for storing sets of test data, a job receiver process, for accepting test requests from a user, each test request including an identifier for selecting test data from the test bucket, a resource process and resource pool for managing system resource data to indicate resources available for software testing on a set of client computer systems, a job execution process for creating test script execution data based on the test data identified in a test request, the job execution process receiving the test request from the job receiver process, the dynamic test script being created upon the resource pool indicating the availability of resources required for the execution of the dynamic test script on one or more of the set of client computer systems, the job execution process initiating testing by forwarding the test execution script data to the appropriate one or more of the set of client computer systems, the system server component further comprising a means for accepting and storing test results from the set of client computer systems.
According to another aspect of the present invention, there is provided the above system further including a client process component, the client process component being executable on one or more of the set of client computer systems and having a listener process for accepting test execution script data from the system server component, a test execution process for carrying out the testing specified by test execution script data provided by the listener process, and for generating a test report and for communicating the test report to the system server component.
According to another aspect of the present invention, there is provided the above system further including a web servlet component providing a graphical user interface for use by the user in defining a test request and a parser component for parsing ASCII format test requests defined by the user.
According to another aspect of the present invention, there is provided the above system further including an active job queue and a dispatcher process, job receiver process placing test requests on the active job queue upon receipt, the dispatcher process determining when a subject test request on the active job queue is matched by available system resources as indicated by the resource pool and providing the subject test request to the job execution process.
According to another aspect of the present invention, there is provided the above system further including a complete job queue for receiving test requests from the job execution process upon the completion of the testing defined by the test request.
According to another aspect of the present invention, there is provided the above system further including a database for the storage of test results received by the job execution process and in which the system server component comprises TCP/IP sockets for accepting test requests and communicating with the set of client systems.
According to another aspect of the present invention, there is provided the above system further including a listener process for generating a test script file from the test script data received from the system server component and which test script file used by the test execution process to define the testing carried out by the client process.
According to another aspect of the present invention, there is provided the above system in which the client process further comprises a control process for receiving control queries and commands from the system server component and for responding to the control queries and commands and in which the job execution process in the system server component further comprises means for generating control queries and commands and for receiving responses to the control queries and commands.
According to another aspect of the present invention, there is provided the above system further including an automated machine refresh subsystem responsive to a refresh command. In which the subsystem includes a stored machine image, a refresh script for modification of the boot.ini and autoexec.bat files on client system computers, the modified autoexec.bat file being configured to modify the boot.ini file and execute drive image software for loading the stored machine image and for rebooting the system into the non-DOS operating system for software testing.
According to another aspect of the present invention, there is provided a computer program product for use with a computer comprising a central processing unit and random access memory, said computer program product comprising a computer usable medium having computer readable code means embodied in said medium for software testing in distributed systems, said computer program product comprising computer readable program code means for causing a computer implement the above system.
According to another aspect of the present invention, there is provided a computer program product tangibly embodying a program of instructions executable by a computer for implementing the above system for automated testing of software.
Advantages of the present invention include a framework for easy integration of alternative test tools and the deployment of appropriate test target machines without specifying either the physical or the logical machine location by the user. The system also requires no user modification to a defined test case to permit execution of the test case on different target machines.